/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DeMaSoft;

import static DeMaSoft.RouteCalculator.mapa;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

/**
 *
 * @author Adrian
 */
public class ManejaDatos {
    
    public static ArrayList<OrdenEntrega> leeArchivo(String prefijo) throws Exception{
        
        Reloj reloj= Reloj.getInstancia();
        
        ArrayList<OrdenEntrega> pedidos= new ArrayList<>();
        String nombreArchivo=prefijo+  reloj.getFechaString("yyyyMMdd") ;// Poner en trunk/Demasoft
        File archivo = new File (nombreArchivo+".txt");
        BufferedReader br = null;
        if (!archivo.exists()) return null;
        try{
            FileReader fr = new FileReader (archivo);
            br= new BufferedReader(fr);
            String linea="";
            
            while (true){
                
                linea=br.readLine();
                if(linea==null) break;
                String hora="";
                String minuto="";
                String posX="";
                String posY="";
                String numPaquete="";
                String idCliente="";
                String hLimit="";
                
                int i=0;
                for (; (i<linea.length() && linea.charAt(i)!=':');i++){
                    
                    hora=hora + linea.charAt(i);
                    
                }
                                                
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    minuto=minuto + linea.charAt(i);
                    
                }
                
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    posX=posX + linea.charAt(i);
                    
                }
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    posY=posY + linea.charAt(i);
                    
                }
                
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    numPaquete=numPaquete + linea.charAt(i);
                    
                }
                
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    idCliente=idCliente + linea.charAt(i);
                    
                }
                for (i++; (i<linea.length() && linea.charAt(i)!=',');i++){
                    
                    hLimit=hLimit + linea.charAt(i);
                    
                }
                
                OrdenEntrega pedido= new OrdenEntrega();
                
                pedido.setHoraPedido(Integer.parseInt(hora));
                pedido.setMinutoPedido(Integer.parseInt(minuto));
                int x =Integer.parseInt(posX);
                int y = Integer.parseInt(posY);
                Punto nodo = mapa.getPuntos().get(y+ x*mapa.getAlto());
                
                
                pedido.setPuntoEntrega(nodo);
                pedido.setNumPaquetes(Integer.parseInt(numPaquete));
                pedido.setPrioridad(Integer.parseInt(hLimit));

                pedidos.add(pedido);                                
            }
            fr.close();
        }catch(Exception e){
            
            System.out.println(e.getMessage());
        }
        
        return pedidos;
    }    
        
    public static ArrayList<OrdenEntrega> sacaSetOrdenes(ArrayList<OrdenEntrega> ordenes ,int horaAct, int minAct, int ventana){
        
        ArrayList<OrdenEntrega> subset= new ArrayList<OrdenEntrega>();
        
        int numOrdenes= ordenes.size();
        
        for (int i=0; i< numOrdenes;i++){
            
            if (ordenes.get(i).getHoraPedido()<horaAct || ((ordenes.get(i).getHoraPedido()==horaAct) && (ordenes.get(i).getMinutoPedido()<=minAct))){
                
                if (minAct>=ventana){
                    
                    if ((ordenes.get(i).getHoraPedido()==horaAct)&& ((minAct-ordenes.get(i).getMinutoPedido())<=ventana)){
                        
                        subset.add(ordenes.get(i));
                    }
                    
                }else{
                    
                    if (((horaAct-1)==ordenes.get(i).getHoraPedido()) && (ordenes.get(i).getMinutoPedido()>(60-ventana))){
                    
                        subset.add(ordenes.get(i));
                    }
                    
                }

            }
            
        }
        
        
        return subset;
    }
    
    
}
